"""
将文件夹中的代码文件内容写入到docx文件中
用于软件著作权申请等
"""

import os
from docx import Document
import argparse


def write_files_to_docx(directory, extension, output_file):
    # 创建一个新的docx文档
    doc = Document()

    # 遍历指定文件夹中的所有文件
    for root, dirs, files in os.walk(directory):
        for filename in files:
            filename = os.path.join(root, filename)
            if filename.endswith(extension):
                # 获取完整的文件路径
                file_path = os.path.join(directory, filename)
                # 添加文件名到文档
                doc.add_heading(os.path.relpath(filename, directory), level=1)
                # 读取并添加文件内容到文档
                with open(file_path, "r", encoding="utf-8") as file:
                    content = file.read()
                    doc.add_paragraph(content)

    # 保存文档
    doc.save(output_file)


def main():
    # 创建argparse解析器
    parser = argparse.ArgumentParser(
        description="将指定文件夹中的所有指定扩展名的代码文件内容写入到docx文件中。"
    )
    parser.add_argument("directory", type=str, help="包含代码文件的文件夹路径")
    parser.add_argument("extension", type=str, help='代码文件的扩展名，例如 ".py"')
    parser.add_argument("output_file", type=str, help="输出的docx文件名")

    # 解析命令行参数
    args = parser.parse_args()

    # 调用函数处理文件
    write_files_to_docx(args.directory, args.extension, args.output_file)
    print(f"所有{args.extension}文件的内容已写入到{args.output_file}。")


if __name__ == "__main__":
    main()
